#ifndef __DLIST_H
#define __DLIST_H

#include<stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>


// //老师的
typedef  struct{
    char fileName[256];
}DElemType_t;

//我新加的

#define MAX_ACCOUNT 6
#define MAX_PASSWORD 6

typedef struct {
    char account_pri[MAX_ACCOUNT];
    char password_pri[MAX_PASSWORD];
}ACCOUNT_PASSWORD_t;

// //数据结点  老师的
typedef struct node_ps{
    DElemType_t data; //存储数据
    struct node_ps *prev;//存储上一个节点的地址
    struct node_ps *next;//存储下一个节点的地址
}DScreenShotNode_t;

//数据结点  我的
typedef struct node{
    ACCOUNT_PASSWORD_t data; //存储数据
    struct node *prev;//存储上一个节点的地址
    struct node *next;//存储下一个节点的地址
}DNode_t;
 
//头节点初始化
DNode_t* list_init();
//判断链表是否为空
bool isEmpty(DNode_t*head);
//尾插法
void list_insert_tail(DNode_t*head,ACCOUNT_PASSWORD_t data);
//void list_show(DNode_t*head);
//链表长度
int list_length(DNode_t*head);
//void list_insert_head(DNode_t*head,ACCOUNT_PASSWORD_t data);
//bool list_delete(DNode_t*head,ACCOUNT_PASSWORD_t data);
//const DNode_t* list_update(DNode_t*head,ACCOUNT_PASSWORD_t srcData,ACCOUNT_PASSWORD_t updateData);

//查找结点(登录用)
const DNode_t* list_find(DNode_t*head,ACCOUNT_PASSWORD_t findData);
//查找结点(注册时看有无账号重复用)
const DNode_t* list_find_duplicate_account(DNode_t*head,ACCOUNT_PASSWORD_t findData);


//头节点初始化
DScreenShotNode_t* list_ps_init();
//判断链表是否为空
bool is_ps_Empty(DScreenShotNode_t*head);
//尾插法
void list_ps_insert_tail(DScreenShotNode_t*head,DElemType_t data);

#endif
